package net.sgoliver.android.spinner;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	private TextView lblMensaje;
	private Spinner cmbOpciones;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        lblMensaje = (TextView)findViewById(R.id.LblMensaje);
        cmbOpciones = (Spinner)findViewById(R.id.CmbOpciones);
        //creamos un array de Strings
        final String[] datos =
            new String[]{"Elem1","Elem2","Elem3","Elem4","Elem5"};
     
        //Alternativa 1: Array java
        //Creamos el arrayAdapter para crear el modelo necesario para Spinner
        ArrayAdapter<String> adaptador =
            new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, datos);
        
        //Alternativa 2: Recurso XML de tipo string-array
        // creamos el array a partir de un XML 
        //que previamente hemos crado en values/valores_array.xml
        //ArrayAdapter<CharSequence> adaptador = 
        //	    ArrayAdapter.createFromResource(this,
        //	        R.array.valores_array, android.R.layout.simple_spinner_item);
        
        //le asignamos el formato al Spinner, 
        //dos tipos por defecto aunque podríamos crear el nuestro propio
        //Tipos:simple_spinner_dropdown_item o simple_spinner_item
        // ver: http://stackoverflow.com/questions/10764918/difference-between-android-r-layout-simple-spinner-dropdown-item-and-android-r-l
        adaptador.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
        //cargamos estos valores en el spiner 
        cmbOpciones.setAdapter(adaptador);

        //anadimos el evento al spinner, es un evento del tipo OnItemSelectedListener.
        //En este caso es un poco diferente porque primero necesitamos un AdapterView
        //aunque podríamos extender el AdapterView para personalizarlos 
        //y sacar el onCreate este codigo. NO RECOMENDADO POR EL MOMENTO.
        cmbOpciones.setOnItemSelectedListener(
        	new AdapterView.OnItemSelectedListener() {
                //es en este punto lo que se ejecutara al seleccionar un elemento del array
        			public void onItemSelected(AdapterView<?> parent, android.view.View v, int position, long id) 
        			{
                        //lblMensaje es el textView del XML de main.xml
        					//datos[] es el String[] creado en al principio 
        					lblMensaje.setText("Seleccionado: " + datos[position]);
                }
        			//es en este punto lo que se ejecutara al NO seleccionar nada
                public void onNothingSelected(AdapterView<?> parent) {
                    lblMensaje.setText("No se ha seleccionado nada");
                }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
